環境変数は、Linuxのシステム内で利用する共通データが入れられている変数のことでLinuxが提供する共有機能の一つです。Linux上で動作するタスク(プロセス)がデータを共有するための仕組みです。
シェル変数とは、環境変数と類似しているが、シェル内で独自に保持しているものであり、シェル以外のプロセスでは使用しません。
現在、デフォルトで追加されているbashの環境変数を表示させるには、env 、もしくは、echo $PATH を実行します。
$ echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11 :/usr/X11R6/bin:/root/bin |
新しくパスを追加したい場合は、export コマンドを使って、export PATH=$PATH:追加するパス
のようにします。以下では、Apache2のパスを追加した例です。
# export PATH=$PATH:/usr/local/apache2/bin/ # echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11 :/usr/X11R6/bin:/root/bin:/usr/local/apache2/bin/ |
上記のようにすることで新しいパスを追加することができましたが、export コマンドでは一時的にしか反映されず、システム再起動時や、再ログイン時には無効になってしまいます。けれども、その都度 export コマンドを使用してパスを追加していたので面倒です。恒久的に有効にするために .bash_profile に上記のコマンドを追加します。.bash_profile は各ユーザーごとにホームディレクトリ直下にデフォルトで用意されていますのでそれを編集します。ここでは、Apache2
に加えてOpenSSLのパスも追加してみます。複数のパスを追加する場合は、コロン「 : 」で区切って列挙していってください。
# ls -la -rw-r--r-- 1 root root 293 12月 30 11:26 .bash_profile -rw-r--r-- 1 root root 176 8月 24 1995 .bashrc # vi .bash_profile |
PATH=$PATH:$HOME/bin BASH_ENV=$HOME/.bashrc USERNAME="root" export PATH=$PATH:/usr/local/apache2/bin:/usr/local/ssl/bin |
これで長たらしいパスをいちいち入力する手間が省けました。ここでもう一度、echo $PATH コマンドを実行すると、シェルにはexport
コマンドで実行したApache のパスは追加されていますが、OpenSSL のパスはシェルに反映されていません。これでは有効になっているとはいえ表示上、不都合なので source コマンドを使ってシェルにも反映させます。
# echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11 :/usr/X11R6/bin:/root/bin:/usr/local/apache2/bin:/root/bin :/usr/local/apache2/bin # source .bash_profile # echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11 :/usr/X11R6/bin:/root/bin:/usr/local/apache2/bin:/root/bin :/usr/local/apache2/bin:/usr/local/ssl/bin |
なお、.bash_profile の他にも .bashrc というファイルも存在し、.bashrc では別のシェルが起動したときにも実行されるようになるので、例えば、startx コマンドでX Windows にログインし、kterm を使用した時にも実行できるようになります。
コマンド名やオプションの引数は憶えにくいものがありますし、よく使うコマンドは簡単に使えるようにしたいということがあります。このようなときはエイリアス機能により、コマンドラインに自分の好みの名前をつけて、登録しておくことができます。エイリアス機能を使うには alias コマンドで登録と表示を、unalias コマンドで取り消しを行います。
aliasコマンドで登録したものはログアウト時に自動的に取り消されてしまいます。登録したものを常に使いたい場合は、「.bashrc」などシェルの設定ファイルに記述し、ログインすると同時にエイリアスが有効になるようにしておきます。なお、ディストリビューションにより異なると思いますが、システムによりaliasコマンドで設定されているコマンドが幾つかあります。
alias [name][=コマンド] |
|
$ alias la="ls -al" |
$ alias alias cp='cp -i' alias l.='ls -d .* --color=auto' alias la='ls -al' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' |
unalias name |
|
$ unalias la |
ある一連の処理をまとめて一つの機能としたものを関数という。 似たような処理を複数箇所で実行している場合は、その一連の処理を関数化して利用すると便利である。
function 関数名() { 処理 return 値 } |
関数名() { 処理 return 値 } |
関数名 引数リスト |
関数名とその関数の処理を定義することで、一連の処理を関数を呼び出すことが可能になります。 通常、関数の最後には return コマンドを指定し、その引数として与えた値が関数の終了ステータスとなります。 return コマンドの引数に指定できる値は、1~255 の正の整数のみです。 (マイナスの値も指定可能ですが、-1 を指定した場合は結果的に 255 になります。紛らわしいので、1~255 の正の整数以外は指定しないようにしましょう。)
この return コマンドは省略可能で、省略された場合は関数内で最後に実行されたコマンドの終了ステータスが、関数自体の終了ステータスとなります。
関数を呼び出すときは、関数名と引数のリストを指定します。引数は省略可能です。 呼び出すときの関数名は C 言語などのように「()」を付ける必要はありません。 func() ではなく func のように、単純に関数名のみを指定します。
変数は必要なときに名前を指定してすぐに使うことが出来ますが、この場合のデータは文字データとして変数に格納されます。一方、変数は明示的に宣言してから使用することも出来ますが、この場合はいろいろな属性を与えることが出来ます。 変数の宣言は declare または typeset コマンド、及び local コマンドで行います。declareコマンドには次のようなオプションがあります。
● declare コマンド構文
declare [オプション] [変数名[=値]] |
|
-a | 変数を配列として作成します |
-i | 変数を整数型(integer)として作成します |
-r | 変数を参照のみ可能(read only)として作成します。宣言時に値を与えておきます また、read onlyの解除は「+r」オプションで再宣言を行う |
-f | 定義済関数を表示します |
-F | 定義済関数名を表示します |
変数には有効範囲があります。つまり、シェルスクリプト中のどこでも使えるもの(グローバル変数)と、関数内だけで使えるもの(ローカル変数)です。関数内でlocalコマンドで宣言しますとローカル変数になります。それ以外の変数はグローバル変数です。また、位置パラメータはローカル変数です。
bashの設定ファイルの実行順序
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[1.05:ハードウェア、ディスク、パーティション、ファイルシステム] | |
[1.06:シェルおよびスクリプト] | |
[1.06.1 シェル環境のカスタマイズ] | |
[1.06.2 シェルスクリプト] | |
[1.07:ネットワーク基礎] | |
[講義検索] | |
[リンク集] |